<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 1. 迭代器 - generator  生成器
        // 跟遍历，和枚举，意思差不多，迭代器可以自定义执行重复的任务
        /*
            特点：
                函数关键字后面有一个星号
                内部使用 yield 
        */

        function* fn() {
            yield 'ok'
            yield '123'
        }

        // 返回值会得到一个可遍历对象
        // console.log(fn());
        const iter = fn()
        // 意味着，可以使用 next() 方法
        /*
            next() 方法就是一个手动的遍历器
                返回一个 对象 包含 done 属性和  value属性
                当 done 为true的时候，证明遍历结束了
        */
        // console.log(iter.next());
        // console.log(iter.next());
        // console.log(iter.next());

        // 这东西，可以使用 for ... of 遍历
        for (const item of iter) {
            console.log(item);
        }
    </script>
</body>

</html>